Skip to content

Skill for Speccing#1131

Open
scosman wants to merge 7 commits intomainfrom
scosman/spec_skill_2
Open

Skill for Speccing#1131
scosman wants to merge 7 commits intomainfrom
scosman/spec_skill_2

Conversation

@scosman
Copy link
Collaborator

@scosman scosman commented Mar 16, 2026

A new skill for using the "spec-driven-dev" approach

Summary by CodeRabbit

  • Documentation
    • Added comprehensive spec-driven workflow guides covering project setup, new-project flow, continue/implement/code-review commands, planning (functional, UI, architecture, components), implementation phases, sub-agent usage, pushback policy, and monorepo coordination; plus code-review agent and phase prompts.
  • Chores
    • Ignored local spec state and added a repository setup hook and initialization script for agent/tooling support.

@scosman scosman requested review from leonardmq and sfierro March 16, 2026 21:23
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 16, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 438a593a-0a2e-43ea-8c51-4d37400d76ba

📥 Commits

Reviewing files that changed from the base of the PR and between df25358 and d858074.

📒 Files selected for processing (1)
  • AGENTS.md
✅ Files skipped from review due to trivial changes (1)
  • AGENTS.md

Walkthrough

Adds a spec-driven development skill: new spec docs, per-step references and prompts, CR and sub-agent patterns, repo setup/monorepo guidance, state handling, code-review guidelines, a gitignore entry, a wt post-create hook, and a Claude setup script.

Changes

Cohort / File(s) Summary
Master Skill Spec
.cursor/skills/specs/SKILL.md
New master spec describing the spec-driven workflow, commands (/spec setup, new_project, continue, implement, cr), project layout, artifact conventions, and state handling.
Command References
.cursor/skills/specs/references/cmd_setup.md, .../cmd_new_project.md, .../cmd_continue.md, .../cmd_implement.md, .../cmd_code_review.md
New detailed command docs covering repo setup, initializing projects, resuming work, phased implementation loops, and an isolated code-review sub-agent workflow.
Planning Step Guides
.cursor/skills/specs/references/step_functional_spec.md, .../step_architecture.md, .../step_ui_design.md, .../step_component_designs.md
Per-step guidance and templates for functional specs, architecture, UI design, and per-component docs; include frontmatter status conventions and review flows.
Agent Prompts & Patterns
.cursor/skills/specs/references/coding_phase_prompt.md, .../cr_agent_prompt.md, .../spawning_subagents.md, .../pushback.md
Prompts and patterns for coding sub-agents, CR persona/output format, spawning fresh sub-agents, and pushback rules.
Repo & Project Config
.gitignore, specs/monorepo.md, AGENTS.md, .agents/code_review_guidelines.md
Ignore .specs_skill_state/, add monorepo overview, insert links and a new code-review guidelines doc with Python/SDK notes.
Tooling / Setup
.config/wt.toml, utils/setup_claude.sh
Adds post-create hook entry for Claude setup and a script that copies AGENTS.md→CLAUDE.md and mirrors .cursor/skills into .claude.

Sequence Diagram(s)

sequenceDiagram
  participant User as User
  participant CLI as "/spec CLI"
  participant Skill as "Specs Skill"
  participant FS as "Filesystem / Repo"
  participant Sub as "Sub-agent (coder / CR)"

  User->>CLI: run /spec new_project or /spec implement
  CLI->>Skill: invoke command with args
  Skill->>FS: read/write specs/projects/PROJECT_NAME/* and .specs_skill_state/current_project.md
  Skill->>Sub: spawn sub-agent with prompt + relevant spec refs
  Sub->>FS: create/modify files, run tests/lint, commit changes
  Sub->>Skill: return summary, issues, or CR findings
  Skill->>User: present summary, ask for confirmation if required
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

codex

Suggested reviewers

  • leonardmq
  • sfierro

Poem

🐰 I hopped through specs and dotted lines,
Drafted plans where careful order shines.
Sub-agents scurry, reviews take flight,
Files get tidy in the soft moonlight.
A carrot clap — repo feels just right!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is minimal and missing required template sections. It lacks 'What does this PR do?' detail, 'Related Issues' link, CLA confirmation, and checklists for testing and new tests. Expand description to include detailed explanation of the spec-driven approach, related issue links, CLA confirmation with GitHub username, and completion of testing checklists.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Skill for Speccing' directly and clearly summarizes the main change: adding a new skill for spec-driven development. It is concise, specific, and conveys the primary purpose.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch scosman/spec_skill_2
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a new 'spec-driven development' skill designed to streamline the software development lifecycle. It provides a robust framework that guides users from initial project conception through detailed specification, phased implementation, and rigorous code review. By clearly defining roles for human decision-makers and AI agents, the skill aims to enhance project clarity, maintainability, and overall quality, ensuring that development aligns closely with well-defined specifications.

Highlights

  • New Skill: Spec-Driven Development: Introduced a comprehensive skill for spec-driven development, outlining a structured process for planning, building, and reviewing code projects using detailed specifications.
  • Command Reference Documentation: Added extensive documentation for key commands such as setup, new_project, continue, implement, and cr (code review), detailing their functionality and usage within the spec-driven workflow.
  • Agent Persona and Interaction Protocols: Defined specific personas and interaction protocols for coding and code review sub-agents, including guidelines for autonomous operation, context management, and iterative feedback loops.
  • Project Structure and State Management: Established conventions for project structure, artifact management with status tracking, and state management, including support for monorepos and gitignore configurations.
  • Planning Step Guidelines: Provided detailed guidelines for various planning steps, including functional specification, architecture design, UI design, and component designs, emphasizing iterative Q&A and a 'pushback protocol' for challenging decisions.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .cursor/skills/specs/SKILL.md
    • Added the core documentation for the new 'spec' skill, detailing its purpose, commands, workflow, and underlying principles.
  • .cursor/skills/specs/references/cmd_code_review.md
    • Added documentation for the /spec cr command, explaining its function for structured, spec-aware code reviews, including scope, execution, and re-review processes.
  • .cursor/skills/specs/references/cmd_continue.md
    • Added documentation for the /spec continue command, which outlines how to resume work on an active project by reading its state and routing to the next logical action.
  • .cursor/skills/specs/references/cmd_implement.md
    • Added documentation for the /spec implement command, detailing the process for autonomous phase implementation, including pre-checks, routing, coding persona, and the CR iteration loop.
  • .cursor/skills/specs/references/cmd_new_project.md
    • Added documentation for the /spec new_project command, describing the steps for creating a new project, setting up its structure, and guiding through the planning phases.
  • .cursor/skills/specs/references/cmd_setup.md
    • Added documentation for the /spec setup command, which covers the initial repository setup, gitignore configuration, directory creation, monorepo detection, and external knowledge checks.
  • .cursor/skills/specs/references/coding_phase_prompt.md
    • Added a self-contained prompt for the coding sub-agent, defining its role, context loading, phase plan writing, and implementation loop.
  • .cursor/skills/specs/references/cr_agent_prompt.md
    • Added a self-contained prompt for the code review sub-agent, outlining its persona, context loading, review dimensions, severity labels, and re-review protocol.
  • .cursor/skills/specs/references/pushback.md
    • Added documentation for the 'Pushback Protocol,' detailing when and how to challenge user decisions during the development process.
  • .cursor/skills/specs/references/spawning_subagents.md
    • Added documentation explaining the concept and usage of sub-agents for clean context execution across different tools.
  • .cursor/skills/specs/references/step_architecture.md
    • Added documentation for the 'Architecture' planning step, covering its process, required content, depth, and decision-making for component designs.
  • .cursor/skills/specs/references/step_component_designs.md
    • Added documentation for the 'Component Designs' planning step, specifying when to use it, what to cover in each component document, and file structure.
  • .cursor/skills/specs/references/step_functional_spec.md
    • Added documentation for the 'Functional Spec' planning step, detailing its process, content areas, quality bar, and pushback guidelines.
  • .cursor/skills/specs/references/step_ui_design.md
    • Added documentation for the 'UI Design' planning step, outlining its process, content for various application types, UX considerations, and pushback guidelines.
  • .gitignore
    • Updated the file to include .specs_skill_state/, ensuring that per-user state files are ignored by Git.
  • specs/monorepo.md
    • Added a new file describing the monorepo layout, including a list of sub-projects with their paths and descriptions.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new "spec" skill for spec-driven development. It adds a comprehensive set of documentation files that define the process, commands, and agent prompts for planning, building, and reviewing projects. The changes are well-structured and the process is well-thought-out. I've found a few minor inconsistencies and errors in the documentation that should be addressed to improve clarity and correctness.

- Mark `complete` after user confirmation
- If a completed artifact is edited, downstream artifacts cascade to `draft` (if they may be affected)

Dependency chain: `project_overview → functional_spec → architecture → components → implementation_plan`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The dependency chain described here is missing the ui_design step, which is mentioned in other parts of the documentation (e.g., cmd_continue.md and cmd_new_project.md) as a conditional step between functional_spec and architecture. To maintain consistency, it should be included here.

Suggested change
Dependency chain: `project_overview → functional_spec → architecture → components → implementation_plan`
Dependency chain: `project_overview → functional_spec → ui_design → architecture → components → implementation_plan`

- → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
- Pass: phase number, project path, instruction to follow single-phase implementation
3. **Auto-commit**: `"Phase N implementation of [project name]\n\n[description of work in phase]"`
4. Show the phase summary from the subagent to the user
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There is a typo "subagent". For consistency with the rest of the documentation which uses "sub-agent", this should be corrected.

Suggested change
4. Show the phase summary from the subagent to the user
4. Show the phase summary from the sub-agent to the user

4. Run tests. Iterate until passing.
5. Run automated checks again. Iterate until clean.
6. Self code-review via sub-agent:
- Read `spec/references/cr_agent_prompt.md` for the CR process
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The path spec/references/cr_agent_prompt.md appears to be incorrect. Assuming the sub-agent runs from the repository root, the path should be .cursor/skills/specs/references/cr_agent_prompt.md to be valid.

Suggested change
- Read `spec/references/cr_agent_prompt.md` for the CR process
- Read `.cursor/skills/specs/references/cr_agent_prompt.md` for the CR process


## CR Iteration Loop

1. Spawn CR sub-agent with the CR prompt from `spec/references/cr_agent_prompt.md`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The path spec/references/cr_agent_prompt.md appears to be incorrect. Assuming the sub-agent runs from the repository root, the path should be .cursor/skills/specs/references/cr_agent_prompt.md to be valid.

Suggested change
1. Spawn CR sub-agent with the CR prompt from `spec/references/cr_agent_prompt.md`
1. Spawn CR sub-agent with the CR prompt from `.cursor/skills/specs/references/cr_agent_prompt.md`

@github-actions
Copy link

github-actions bot commented Mar 16, 2026

📊 Coverage Report

Overall Coverage: 91%

Diff: origin/main...HEAD

No lines with coverage information in this diff.


Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 14

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.cursor/skills/specs/references/cmd_code_review.md:
- Around line 34-38: The fenced example block beginning with the triple
backticks that contains the <prior_cr_feedback> element lacks a language tag;
update the opening fence (the ``` that starts the block) to include a language
identifier such as xml (e.g., change ``` to ```xml) so the block is properly
syntax-tagged and markdown lint warnings are resolved.
- Around line 20-23: The markdown contains incorrect sibling links like
"references/spawning_subagents.md" and "references/cr_agent_prompt.md" which
resolve to references/references/...; change them to sibling-relative paths
"./spawning_subagents.md" and "./cr_agent_prompt.md" (and update any other
occurrences of those same link strings elsewhere in the file, e.g., the
occurrences near the bottom that mirror lines 68-69) so the links point
correctly to the files in the same directory.

In @.cursor/skills/specs/references/cmd_continue.md:
- Around line 34-37: The fenced code block that currently contains the
dependency order list (the block showing "project_overview.md →
functional_spec.md → ui_design.md (if exists) → architecture.md → components/
(if exists) → implementation_plan.md") should have a language specified to
satisfy markdownlint; change the opening fence from ``` to ```text so the block
is marked as plain text and formatting/linting pass for the fence starting at
that dependency-order block.

In @.cursor/skills/specs/references/cmd_implement.md:
- Around line 65-67: The sibling links in cmd_implement.md incorrectly include
the leading "references/" prefix (e.g., "references/spawning_subagents.md" and
"references/cr_agent_prompt.md") even though the file already lives in the
references/ directory; update those link targets to be relative within the same
folder (remove the "references/" prefix) for all occurrences (including the ones
at lines ~101-102 and ~116-122) so links point to spawning_subagents.md,
cr_agent_prompt.md, etc.
- Line 54: The docs line currently references the repo-root location
`/phase_plans/phase_N.md`; change that wording in cmd_implement.md so it
instructs writers to place phase plans in the project-specific phase_plans
directory (i.e., the phase_plans folder under the target project), not the
repository root—replace the literal `/phase_plans/phase_N.md` with a
project-scoped placeholder that makes the intended project-local path clear.

In @.cursor/skills/specs/references/cmd_setup.md:
- Around line 104-118: The markdown block under the "### Suggested Addition:
Automated Checks" section uses nested triple-backtick fences which can render
incorrectly; change the outer fenced code block to a longer fence (e.g., four
backticks) or indent the inner block so the inner "```markdown" block is
preserved; update the outer fence where the example begins and ends so the
nested fenced block for "## Automated Code Checks" remains intact.

In @.cursor/skills/specs/references/coding_phase_prompt.md:
- Line 57: Replace the incorrect path prefix
"spec/references/cr_agent_prompt.md" (and any other occurrences using
"spec/references/...") in the coding sub-agent prompt to the repository's actual
reference path by updating the two occurrences (lines referencing
"spec/references/...") to "references/cr_agent_prompt.md" (i.e., change
"spec/references/..." → "references/...") so the CR loop instructions point to
the correct prompt file.

In @.cursor/skills/specs/references/cr_agent_prompt.md:
- Around line 94-98: The fenced code block containing the <prior_cr_feedback>
XML snippet is missing a language specifier; update the fenced block that starts
with ``` to include a language identifier such as text or xml (for example
change ``` to ```text or ```xml) so the block becomes fenced with a language and
satisfies markdown linting and improves rendering.

In @.cursor/skills/specs/references/spawning_subagents.md:
- Around line 29-31: The Claude Code example uses an incorrect prompt path
inside the Task(...) call; update the string
"spec/references/cr_agent_prompt.md" to the correct docs location used in this
repo (e.g., "specs/references/cr_agent_prompt.md") so the Task(...) reference
points to the actual prompt file; modify the Task invocation in the markdown
example accordingly.

In @.cursor/skills/specs/references/step_architecture.md:
- Line 91: The markdown link currently points to "references/pushback.md" which
is incorrect for this directory; update the link target on the arrowed line (the
line containing "→ Load [references/pushback.md](references/pushback.md) if not
already loaded.") to use a relative path to the local file (e.g., "pushback.md"
or "./pushback.md") so the link correctly resolves from this document's
directory.

In @.cursor/skills/specs/references/step_functional_spec.md:
- Line 81: The Markdown link uses a nested path "references/pushback.md" that
likely doesn't exist relative to step_functional_spec.md; update the link to the
correct relative path "pushback.md" (or "./pushback.md") so the reference
resolves correctly, i.e., replace references/pushback.md with pushback.md in the
document.

In @.cursor/skills/specs/references/step_ui_design.md:
- Line 57: Update the broken relative markdown link on the line containing "→
Load [references/pushback.md](references/pushback.md) if not already loaded." to
point directly to pushback.md (e.g., change the link target to pushback.md or
./pushback.md) so it no longer resolves to references/references/...; ensure the
visible text can remain "references/pushback.md" if desired but the URL target
must be corrected.

In @.cursor/skills/specs/SKILL.md:
- Around line 107-109: The fenced code block showing "Current Project:
/specs/projects/project_name" is unlabeled; update that triple-backtick fence to
specify the language tag `text` so the block becomes ```text — locate the code
block containing the string "Current Project: /specs/projects/project_name" in
SKILL.md and add the `text` tag to the opening fence for markdownlint
compatibility and consistency.

In `@specs/monorepo.md`:
- Line 9: The phrase "fine tuning" in the libs/core description should use a
hyphenated compound modifier; update the string in the monorepo spec (the table
row containing "`libs/core/` | Python library with the core functionality of
Kiln (evals, synthetic data gen, fine tuning, RAG, etc.)") to read "fine-tuning"
so the description becomes "evals, synthetic data gen, fine-tuning, RAG, etc."
to maintain consistent technical writing.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d86724b3-dad9-422d-bae4-f8f9d5042942

📥 Commits

Reviewing files that changed from the base of the PR and between 11b4645 and f09212a.

📒 Files selected for processing (21)
  • .cursor/skills/specs/SKILL.md
  • .cursor/skills/specs/references/cmd_code_review.md
  • .cursor/skills/specs/references/cmd_continue.md
  • .cursor/skills/specs/references/cmd_implement.md
  • .cursor/skills/specs/references/cmd_new_project.md
  • .cursor/skills/specs/references/cmd_setup.md
  • .cursor/skills/specs/references/coding_phase_prompt.md
  • .cursor/skills/specs/references/cr_agent_prompt.md
  • .cursor/skills/specs/references/pushback.md
  • .cursor/skills/specs/references/spawning_subagents.md
  • .cursor/skills/specs/references/step_architecture.md
  • .cursor/skills/specs/references/step_component_designs.md
  • .cursor/skills/specs/references/step_functional_spec.md
  • .cursor/skills/specs/references/step_ui_design.md
  • .gitignore
  • app/desktop/specs/projects/.gitkeep
  • app/web_ui/specs/projects/.gitkeep
  • libs/core/specs/projects/.gitkeep
  • libs/server/specs/projects/.gitkeep
  • specs/monorepo.md
  • specs/projects/.gitkeep

Comment on lines +20 to +23
→ Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn sub-agents.

Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md), plus scope description.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix broken relative reference links in this file.

Because this file already lives in references/, links like references/spawning_subagents.md and references/cr_agent_prompt.md point to references/references/... and won’t resolve correctly. Use sibling-relative paths.

Proposed fix
-→ Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn sub-agents.
+→ Read [spawning_subagents.md](spawning_subagents.md) for how to spawn sub-agents.

-Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md), plus scope description.
+Pass the prompt from [cr_agent_prompt.md](cr_agent_prompt.md), plus scope description.

-- [references/spawning_subagents.md](references/spawning_subagents.md) — How to spawn sub-agents
-- [references/cr_agent_prompt.md](references/cr_agent_prompt.md) — Prompt passed to CR sub-agent
+- [spawning_subagents.md](spawning_subagents.md) — How to spawn sub-agents
+- [cr_agent_prompt.md](cr_agent_prompt.md) — Prompt passed to CR sub-agent

Also applies to: 68-69

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/cmd_code_review.md around lines 20 - 23, The
markdown contains incorrect sibling links like
"references/spawning_subagents.md" and "references/cr_agent_prompt.md" which
resolve to references/references/...; change them to sibling-relative paths
"./spawning_subagents.md" and "./cr_agent_prompt.md" (and update any other
occurrences of those same link strings elsewhere in the file, e.g., the
occurrences near the bottom that mirror lines 68-69) so the links point
correctly to the files in the same directory.

Comment on lines +34 to +38
```
<prior_cr_feedback>
[Prior CR content here]
</prior_cr_feedback>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a language tag to the fenced example block.

Line 34 starts a fenced block without a language. Tagging it (e.g., xml) keeps markdown lint clean and improves readability.

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 34-34: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/cmd_code_review.md around lines 34 - 38, The
fenced example block beginning with the triple backticks that contains the
<prior_cr_feedback> element lacks a language tag; update the opening fence (the
``` that starts the block) to include a language identifier such as xml (e.g.,
change ``` to ```xml) so the block is properly syntax-tagged and markdown lint
warnings are resolved.

Comment on lines +34 to +37
```
project_overview.md → functional_spec.md → ui_design.md (if exists)
→ architecture.md → components/ (if exists) → implementation_plan.md
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Specify a language for the dependency-order fenced block.

Add text to the fence starting at Line 34 to satisfy markdownlint and keep formatting consistent.

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 34-34: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/cmd_continue.md around lines 34 - 37, The
fenced code block that currently contains the dependency order list (the block
showing "project_overview.md → functional_spec.md → ui_design.md (if exists) →
architecture.md → components/ (if exists) → implementation_plan.md") should have
a language specified to satisfy markdownlint; change the opening fence from ```
to ```text so the block is marked as plain text and formatting/linting pass for
the fence starting at that dependency-order block.


1. **Read the implementation plan** and identify the target phase
2. **Read spec and architecture docs** for context
3. **Write phase plan** to `/phase_plans/phase_N.md`:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Write phase plans to the project-specific path, not repo root.

Line 54 currently points to /phase_plans/phase_N.md, which conflicts with the documented project structure and can place files in the wrong location.

Proposed fix
-3. **Write phase plan** to `/phase_plans/phase_N.md`:
+3. **Write phase plan** to `specs/projects/PROJECT_NAME/phase_plans/phase_N.md`:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
3. **Write phase plan** to `/phase_plans/phase_N.md`:
3. **Write phase plan** to `specs/projects/PROJECT_NAME/phase_plans/phase_N.md`:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/cmd_implement.md at line 54, The docs line
currently references the repo-root location `/phase_plans/phase_N.md`; change
that wording in cmd_implement.md so it instructs writers to place phase plans in
the project-specific phase_plans directory (i.e., the phase_plans folder under
the target project), not the repository root—replace the literal
`/phase_plans/phase_N.md` with a project-scoped placeholder that makes the
intended project-local path clear.

Comment on lines +65 to +67
- → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
- Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md) to the sub-agent
- Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix sibling reference links in this references file.

These links include references/... even though this file already resides in references/, so they likely resolve incorrectly.

Proposed fix
-   - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
-   - Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md) to the sub-agent
+   - → Read [spawning_subagents.md](spawning_subagents.md) for how to spawn
+   - Pass the prompt from [cr_agent_prompt.md](cr_agent_prompt.md) to the sub-agent

-   - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
+   - → Read [spawning_subagents.md](spawning_subagents.md) for how to spawn

-For implement-all, pass the content of [references/coding_phase_prompt.md](references/coding_phase_prompt.md) to each phase sub-agent.
+For implement-all, pass the content of [coding_phase_prompt.md](coding_phase_prompt.md) to each phase sub-agent.

-- [references/spawning_subagents.md](references/spawning_subagents.md) — How to spawn sub-agents
-- [references/coding_phase_prompt.md](references/coding_phase_prompt.md) — Prompt passed to coding sub-agents
-- [references/cr_agent_prompt.md](references/cr_agent_prompt.md) — Prompt passed to CR sub-agents
+- [spawning_subagents.md](spawning_subagents.md) — How to spawn sub-agents
+- [coding_phase_prompt.md](coding_phase_prompt.md) — Prompt passed to coding sub-agents
+- [cr_agent_prompt.md](cr_agent_prompt.md) — Prompt passed to CR sub-agents

Also applies to: 101-102, 116-122

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/cmd_implement.md around lines 65 - 67, The
sibling links in cmd_implement.md incorrectly include the leading "references/"
prefix (e.g., "references/spawning_subagents.md" and
"references/cr_agent_prompt.md") even though the file already lives in the
references/ directory; update those link targets to be relative within the same
folder (remove the "references/" prefix) for all occurrences (including the ones
at lines ~101-102 and ~116-122) so links point to spawning_subagents.md,
cr_agent_prompt.md, etc.


## Pushback

→ Load [references/pushback.md](references/pushback.md) if not already loaded.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Incorrect relative path for pushback doc link.

At Line 91, the link should point to pushback.md (or ./pushback.md) from the current directory.

✏️ Suggested edit
-→ Load [references/pushback.md](references/pushback.md) if not already loaded.
+→ Load [pushback.md](pushback.md) if not already loaded.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
→ Load [references/pushback.md](references/pushback.md) if not already loaded.
→ Load [pushback.md](pushback.md) if not already loaded.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/step_architecture.md at line 91, The
markdown link currently points to "references/pushback.md" which is incorrect
for this directory; update the link target on the arrowed line (the line
containing "→ Load [references/pushback.md](references/pushback.md) if not
already loaded.") to use a relative path to the local file (e.g., "pushback.md"
or "./pushback.md") so the link correctly resolves from this document's
directory.


## Pushback

→ Load [references/pushback.md](references/pushback.md) if not already loaded.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix relative link path to pushback guide.

At Line 81, references/pushback.md likely resolves to a non-existent nested path from this directory. Use pushback.md (or ./pushback.md).

✏️ Suggested edit
-→ Load [references/pushback.md](references/pushback.md) if not already loaded.
+→ Load [pushback.md](pushback.md) if not already loaded.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
→ Load [references/pushback.md](references/pushback.md) if not already loaded.
→ Load [pushback.md](pushback.md) if not already loaded.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/step_functional_spec.md at line 81, The
Markdown link uses a nested path "references/pushback.md" that likely doesn't
exist relative to step_functional_spec.md; update the link to the correct
relative path "pushback.md" (or "./pushback.md") so the reference resolves
correctly, i.e., replace references/pushback.md with pushback.md in the
document.


## Pushback

→ Load [references/pushback.md](references/pushback.md) if not already loaded.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Broken relative link to pushback reference.

At Line 57, update the link target to pushback.md (or ./pushback.md) to avoid pointing at references/references/....

✏️ Suggested edit
-→ Load [references/pushback.md](references/pushback.md) if not already loaded.
+→ Load [pushback.md](pushback.md) if not already loaded.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
→ Load [references/pushback.md](references/pushback.md) if not already loaded.
→ Load [pushback.md](pushback.md) if not already loaded.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/step_ui_design.md at line 57, Update the
broken relative markdown link on the line containing "→ Load
[references/pushback.md](references/pushback.md) if not already loaded." to
point directly to pushback.md (e.g., change the link target to pushback.md or
./pushback.md) so it no longer resolves to references/references/...; ensure the
visible text can remain "references/pushback.md" if desired but the URL target
must be corrected.

Comment on lines +107 to +109
```
Current Project: /specs/projects/project_name
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a language tag to the state-file example block.

The fenced block is unlabeled; use text for markdownlint compatibility and consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/SKILL.md around lines 107 - 109, The fenced code block
showing "Current Project: /specs/projects/project_name" is unlabeled; update
that triple-backtick fence to specify the language tag `text` so the block
becomes ```text — locate the code block containing the string "Current Project:
/specs/projects/project_name" in SKILL.md and add the `text` tag to the opening
fence for markdownlint compatibility and consistency.


| Path | Description |
|------|-------------|
| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use hyphenated compound modifier for readability.

At Line 9, change fine tuning to fine-tuning for consistent technical writing style.

✏️ Suggested edit
-| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) |
+| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine-tuning, RAG, etc.) |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) |
| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine-tuning, RAG, etc.) |
🧰 Tools
🪛 LanguageTool

[grammar] ~9-~9: Use a hyphen to join words.
Context: ...of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) | | libs/server/ | ...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@specs/monorepo.md` at line 9, The phrase "fine tuning" in the libs/core
description should use a hyphenated compound modifier; update the string in the
monorepo spec (the table row containing "`libs/core/` | Python library with the
core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.)")
to read "fine-tuning" so the description becomes "evals, synthetic data gen,
fine-tuning, RAG, etc." to maintain consistent technical writing.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.cursor/skills/specs/references/cmd_implement.md:
- Line 68: Replace the vague placeholder and non-descriptive link text in the
string that currently reads "A coding agent just implemented phase N of
[project]. Review the changes using `git diff`. The spec for this project can be
found [here](link_to_spec_folder)." — update the markdown to point to a concrete
path pattern (e.g., a relative spec folder pattern like
`specs/<project>/phase-N` or a repo-specific glob) in place of
`link_to_spec_folder`, and change the link text from "[here]" to a descriptive
phrase such as "project spec" or "phase N spec" so the new text clearly
identifies and links to the spec (locate and edit this literal line in the file
content).

In `@agents/code_review_guidelines.md`:
- Line 26: Update the sentence "All visible classes/vars should have docstrings
explaining their purpose. These will be pulled into 3rd party docs
automatically. The doc strings should be written for 3rd party devs learning the
SDK." by hyphenating the compound adjective "3rd party" in both occurrences to
"3rd-party" so it reads "...pulled into 3rd-party docs..." and "...written for
3rd-party devs..."; ensure both instances in the line are changed and keep the
rest of the wording unchanged.
- Around line 15-18: Update the "Python specific guide" heading and wording to
correct grammar: change the heading text "Python specific" to "Python-specific"
and replace the phrase "where ever" with the single word "wherever" in the line
that reads "We use `asyncio` where ever possible. Avoid threads..." so it
becomes "We use `asyncio` wherever possible. Avoid threads..." to ensure correct
hyphenation and word usage.
- Around line 9-10: Update the two typos in the comments guidance: in the
"Unnecessary comments" bullet replace "self explanitory" with "self-explanatory"
and in the "Missing comments" bullet replace "non obvious" with "non-obvious";
locate the phrases within the "Unnecessary comments" and "Missing comments"
lines and apply the corrected hyphenation and spelling.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 05b66928-c219-4888-a321-05dbf3f9b36b

📥 Commits

Reviewing files that changed from the base of the PR and between f09212a and 991be8c.

📒 Files selected for processing (3)
  • .cursor/skills/specs/references/cmd_implement.md
  • AGENTS.md
  • agents/code_review_guidelines.md
✅ Files skipped from review due to trivial changes (1)
  • AGENTS.md

9. **Self code-review via sub-agent**:
- → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
- Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md) to the sub-agent
- Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found [here](link_to_spec_folder)."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Replace placeholder with specific path pattern and improve link text.

Line 68 contains a vague placeholder link_to_spec_folder that isn't actionable, and the link text "[here]" is non-descriptive.

📝 Proposed fix
-   - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found [here](link_to_spec_folder)."
+   - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found at `specs/projects/PROJECT_NAME/`."
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found [here](link_to_spec_folder)."
- Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found at `specs/projects/PROJECT_NAME/`."
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 68-68: Link text should be descriptive

(MD059, descriptive-link-text)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cursor/skills/specs/references/cmd_implement.md at line 68, Replace the
vague placeholder and non-descriptive link text in the string that currently
reads "A coding agent just implemented phase N of [project]. Review the changes
using `git diff`. The spec for this project can be found
[here](link_to_spec_folder)." — update the markdown to point to a concrete path
pattern (e.g., a relative spec folder pattern like `specs/<project>/phase-N` or
a repo-specific glob) in place of `link_to_spec_folder`, and change the link
text from "[here]" to a descriptive phrase such as "project spec" or "phase N
spec" so the new text clearly identifies and links to the spec (locate and edit
this literal line in the file content).

Comment on lines +9 to +10
- Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments
- Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix typo and hyphenation in comments guidance.

Two minor issues in the code comments section:

  • Line 9: "self explanitory" should be "self-explanatory"
  • Line 10: "non obvious" should be "non-obvious"
📝 Proposed fix
-  - Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments
-  - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented.
+  - Unnecessary comments: explaining code that is self-explanatory, or code that should be explained by function/var names and is instead explained by comments
+  - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non-obvious, the why should be documented.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments
- Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented.
- Unnecessary comments: explaining code that is self-explanatory, or code that should be explained by function/var names and is instead explained by comments
- Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non-obvious, the why should be documented.
🧰 Tools
🪛 LanguageTool

[grammar] ~10-~10: Use a hyphen to join words.
Context: ...mething unexpected, and the "why" is non obvious, the why should be documented. -...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@agents/code_review_guidelines.md` around lines 9 - 10, Update the two typos
in the comments guidance: in the "Unnecessary comments" bullet replace "self
explanitory" with "self-explanatory" and in the "Missing comments" bullet
replace "non obvious" with "non-obvious"; locate the phrases within the
"Unnecessary comments" and "Missing comments" lines and apply the corrected
hyphenation and spelling.

Comment on lines +15 to +18
### Python specific guide

- Code should be "Pythonic"
- We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix grammar issues in Python section.

Two grammar corrections needed:

  • Line 15: "Python specific" should be "Python-specific"
  • Line 18: "where ever" should be "wherever"
📝 Proposed fix
-### Python specific guide
+### Python-specific guide
 
 - Code should be "Pythonic"
-- We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async.
+- We use `asyncio` wherever possible. Avoid threads unless there's a good reason we can't use async.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Python specific guide
- Code should be "Pythonic"
- We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async.
### Python-specific guide
- Code should be "Pythonic"
- We use `asyncio` wherever possible. Avoid threads unless there's a good reason we can't use async.
🧰 Tools
🪛 LanguageTool

[grammar] ~15-~15: Use a hyphen to join words.
Context: ...ally called from many apps). ### Python specific guide - Code should be "Python...

(QB_NEW_EN_HYPHEN)


[grammar] ~18-~18: Ensure spelling is correct
Context: ...should be "Pythonic" - We use asyncio where ever possible. Avoid threads unless there's ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@agents/code_review_guidelines.md` around lines 15 - 18, Update the "Python
specific guide" heading and wording to correct grammar: change the heading text
"Python specific" to "Python-specific" and replace the phrase "where ever" with
the single word "wherever" in the line that reads "We use `asyncio` where ever
possible. Avoid threads..." so it becomes "We use `asyncio` wherever possible.
Avoid threads..." to ensure correct hyphenation and word usage.

The SDK in `/libs/core` is a SDK/library we expose to third parties. We code review it with additional standards.

- Changing existing APIs that break current users should be avoided. Call out breaking API changes, and confirm with user that we're okay with this break.
- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add hyphens to "3rd-party" compound adjective.

"3rd party" should be hyphenated when used as a compound adjective (appears twice on this line).

📝 Proposed fix
-- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK.
+- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd-party docs automatically. The doc strings should be written for 3rd-party devs learning the SDK.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK.
- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd-party docs automatically. The doc strings should be written for 3rd-party devs learning the SDK.
🧰 Tools
🪛 LanguageTool

[grammar] ~26-~26: Use a hyphen to join words.
Context: ...r purpose. These will be pulled into 3rd party docs automatically. The doc string...

(QB_NEW_EN_HYPHEN)


[grammar] ~26-~26: Use a hyphen to join words.
Context: ...he doc strings should be written for 3rd party devs learning the SDK. - Performan...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@agents/code_review_guidelines.md` at line 26, Update the sentence "All
visible classes/vars should have docstrings explaining their purpose. These will
be pulled into 3rd party docs automatically. The doc strings should be written
for 3rd party devs learning the SDK." by hyphenating the compound adjective "3rd
party" in both occurrences to "3rd-party" so it reads "...pulled into 3rd-party
docs..." and "...written for 3rd-party devs..."; ensure both instances in the
line are changed and keep the rest of the wording unchanged.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (3)
.agents/code_review_guidelines.md (3)

26-26: ⚠️ Potential issue | 🟡 Minor

Hyphenate compound adjective "3rd party".

The phrase "3rd party" should be hyphenated when used as a compound adjective (appears twice on this line).

📝 Proposed fix
-- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK.
+- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd-party docs automatically. The doc strings should be written for 3rd-party devs learning the SDK.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/code_review_guidelines.md at line 26, Change the two occurrences of
the unhyphenated compound adjective "3rd party" on the line in the doc rule to
the hyphenated form "3rd-party" so the sentence reads that docstrings will be
pulled into "3rd-party docs" and be written for "3rd-party devs"; update both
instances of "3rd party" on that line (the visible classes/vars docstring
guidance) to "3rd-party".

9-10: ⚠️ Potential issue | 🟡 Minor

Fix typos in comments guidance.

Two spelling/grammar issues:

  • "self explanitory" should be "self-explanatory"
  • "non obvious" should be "non-obvious"
📝 Proposed fix
-  - Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments
-  - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented.
+  - Unnecessary comments: explaining code that is self-explanatory, or code that should be explained by function/var names and is instead explained by comments
+  - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non-obvious, the why should be documented.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/code_review_guidelines.md around lines 9 - 10, The guidance text
contains two typos: replace "self explanitory" with "self-explanatory" and "non
obvious" with "non-obvious" in the comment block that lists "Unnecessary
comments" and "Missing comments" so the wording is grammatically correct and
hyphenated; update those two phrases in the same paragraph where they appear.

15-18: ⚠️ Potential issue | 🟡 Minor

Fix grammar issues in Python section.

Two corrections needed:

  • "Python specific" should be "Python-specific" (compound adjective)
  • "where ever" should be "wherever" (single word)
📝 Proposed fix
-### Python specific guide
+### Python-specific guide

 - Code should be "Pythonic"
-- We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async.
+- We use `asyncio` wherever possible. Avoid threads unless there's a good reason we can't use async.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/code_review_guidelines.md around lines 15 - 18, The "Python
specific" heading and the phrase "where ever possible" have grammar issues;
update the heading "### Python specific guide" to "### Python-specific guide"
and change "We use `asyncio` where ever possible." to "We use `asyncio` wherever
possible." so the compound adjective and adverb are corrected in the
Python-specific guide section.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.agents/code_review_guidelines.md:
- Line 3: The markdown heading "### Issues to watch for" violates heading
hierarchy by jumping from h1 to h3; change the heading level to "## Issues to
watch for" (update the heading text "Issues to watch for") so it increments one
level at a time and restores proper h1->h2->h3 structure in the document.
- Line 27: Update the performance guidance sentence mentioning base_adapter and
litellm_adapter: change "etc)" to "etc.)" and change "blocking IO" to "blocking
I/O" so the sentence reads correctly and uses the standard abbreviation; locate
the sentence referencing base_adapter and litellm_adapter in the performance
guidance block and apply these two textual edits.

---

Duplicate comments:
In @.agents/code_review_guidelines.md:
- Line 26: Change the two occurrences of the unhyphenated compound adjective
"3rd party" on the line in the doc rule to the hyphenated form "3rd-party" so
the sentence reads that docstrings will be pulled into "3rd-party docs" and be
written for "3rd-party devs"; update both instances of "3rd party" on that line
(the visible classes/vars docstring guidance) to "3rd-party".
- Around line 9-10: The guidance text contains two typos: replace "self
explanitory" with "self-explanatory" and "non obvious" with "non-obvious" in the
comment block that lists "Unnecessary comments" and "Missing comments" so the
wording is grammatically correct and hyphenated; update those two phrases in the
same paragraph where they appear.
- Around line 15-18: The "Python specific" heading and the phrase "where ever
possible" have grammar issues; update the heading "### Python specific guide" to
"### Python-specific guide" and change "We use `asyncio` where ever possible."
to "We use `asyncio` wherever possible." so the compound adjective and adverb
are corrected in the Python-specific guide section.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: cfd5cdef-0f70-497a-b39b-e94cae3aa133

📥 Commits

Reviewing files that changed from the base of the PR and between 991be8c and ab245c1.

📒 Files selected for processing (2)
  • .agents/code_review_guidelines.md
  • .gitignore
✅ Files skipped from review due to trivial changes (1)
  • .gitignore

@@ -0,0 +1,27 @@
# Kiln Code Review Guidelines

### Issues to watch for
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix heading level hierarchy.

The heading "### Issues to watch for" jumps from h1 to h3, skipping h2. Per markdown best practices, heading levels should increment by one level at a time.

📝 Proposed fix
-### Issues to watch for
+## Issues to watch for
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### Issues to watch for
## Issues to watch for
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 3-3: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/code_review_guidelines.md at line 3, The markdown heading "###
Issues to watch for" violates heading hierarchy by jumping from h1 to h3; change
the heading level to "## Issues to watch for" (update the heading text "Issues
to watch for") so it increments one level at a time and restores proper
h1->h2->h3 structure in the document.


- Changing existing APIs that break current users should be avoided. Call out breaking API changes, and confirm with user that we're okay with this break.
- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK.
- Performance: the base_adapter and litellm_adapter are performance critical. They are the core run-loop of our agent system. We should avoid anything that would slow them down (file reads should be done once and passed in, etc). It's critical to avoid blocking IO - a process may be executing hundreds of these in parallel.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix formatting issues in performance guidance.

Two minor formatting corrections:

  • "etc)" should be "etc.)" with a period before the closing parenthesis
  • "blocking IO" should be "blocking I/O" for the standard abbreviation
📝 Proposed fix
-- Performance: the base_adapter and litellm_adapter are performance critical. They are the core run-loop of our agent system. We should avoid anything that would slow them down (file reads should be done once and passed in, etc). It's critical to avoid blocking IO - a process may be executing hundreds of these in parallel.
+- Performance: the base_adapter and litellm_adapter are performance critical. They are the core run-loop of our agent system. We should avoid anything that would slow them down (file reads should be done once and passed in, etc.). It's critical to avoid blocking I/O - a process may be executing hundreds of these in parallel.
🧰 Tools
🪛 LanguageTool

[style] ~27-~27: In American English, abbreviations like “etc.” require a period.
Context: ...eads should be done once and passed in, etc). It's critical to avoid blocking IO - ...

(ETC_PERIOD)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.agents/code_review_guidelines.md at line 27, Update the performance
guidance sentence mentioning base_adapter and litellm_adapter: change "etc)" to
"etc.)" and change "blocking IO" to "blocking I/O" so the sentence reads
correctly and uses the standard abbreviation; locate the sentence referencing
base_adapter and litellm_adapter in the performance guidance block and apply
these two textual edits.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.config/wt.toml (1)

3-3: Consider wrapping the hook script with bash for consistency.

The script utils/setup_claude.sh is already executable and has a proper shebang, so direct invocation will work. However, other hooks in the same file (deps, session) use shell syntax and command chaining. Wrapping this as claude = "bash utils/setup_claude.sh" makes the invocation method explicit and consistent with the pattern of multi-command hooks in the configuration.

Suggested change
-claude = "utils/setup_claude.sh"
+claude = "bash utils/setup_claude.sh"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.config/wt.toml at line 3, Update the claude hook value to invoke the script
through bash for consistency with other hooks: change the claude entry (claude =
"utils/setup_claude.sh") to explicitly run via bash (e.g., claude = "bash
utils/setup_claude.sh") so the invocation method matches the deps/session hooks
and avoids ambiguity even though the script is executable and has a shebang.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@utils/setup_claude.sh`:
- Around line 4-8: Add a defensive existence check before the unconditional "cp
AGENTS.md CLAUDE.md" operation: verify that AGENTS.md exists (similar to the
existing check for ".cursor/skills"), and if it does not, emit a clear error
message and exit non‑zero so the script fails with an informative message rather
than an opaque cp error; update the block around the cp command in
utils/setup_claude.sh accordingly so the check precedes the cp AGENTS.md
CLAUDE.md operation.

---

Nitpick comments:
In @.config/wt.toml:
- Line 3: Update the claude hook value to invoke the script through bash for
consistency with other hooks: change the claude entry (claude =
"utils/setup_claude.sh") to explicitly run via bash (e.g., claude = "bash
utils/setup_claude.sh") so the invocation method matches the deps/session hooks
and avoids ambiguity even though the script is executable and has a shebang.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 9134f627-439d-4c6a-84c7-4bb72485ead6

📥 Commits

Reviewing files that changed from the base of the PR and between ab245c1 and df25358.

📒 Files selected for processing (2)
  • .config/wt.toml
  • utils/setup_claude.sh

Comment on lines +4 to +8
set -e

# Copy AGENTS.md to CLAUDE.md
cp AGENTS.md CLAUDE.md

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, locate and read the script file
fd "setup_claude.sh" -type f

Repository: Kiln-AI/Kiln

Length of output: 226


🏁 Script executed:

#!/bin/bash
# Check if file exists and read its content
if [ -f "utils/setup_claude.sh" ]; then
  echo "=== Content of utils/setup_claude.sh ==="
  cat -n utils/setup_claude.sh
else
  echo "File not found"
fi

Repository: Kiln-AI/Kiln

Length of output: 468


🏁 Script executed:

#!/bin/bash
# Check if AGENTS.md exists in root
echo "=== Checking for AGENTS.md in root ==="
if [ -f "AGENTS.md" ]; then
  echo "AGENTS.md exists"
  head -3 AGENTS.md
else
  echo "AGENTS.md not found"
fi

# Look for any post-create hooks context
echo -e "\n=== Looking for post-create hook references ==="
rg "post-create|setup_claude" -t sh -t md --max-count=10

Repository: Kiln-AI/Kiln

Length of output: 340


🏁 Script executed:

#!/bin/bash
# Check the directory structure to understand context
echo "=== Repository root structure ==="
ls -la | grep -E "(AGENTS|CLAUDE|\.cursor|utils)"

echo -e "\n=== utils directory content ==="
ls -la utils/

echo -e "\n=== .cursor directory content (if exists) ==="
if [ -d ".cursor" ]; then
  ls -la .cursor/
fi

Repository: Kiln-AI/Kiln

Length of output: 938


🏁 Script executed:

#!/bin/bash
# Look for VS Code post-create hook references or dev container config
echo "=== Looking for post-create configuration ==="
fd "\.devcontainer|post-create" -type f 2>/dev/null | head -20

echo -e "\n=== Check for devcontainer.json ==="
find . -name "devcontainer.json" -o -name ".devcontainer.json" 2>/dev/null

echo -e "\n=== Check for any documentation about setup_claude.sh ==="
rg "setup_claude" . --max-count=5 -i

echo -e "\n=== Look at related setup scripts for patterns ==="
cat -n utils/setup_env.sh

Repository: Kiln-AI/Kiln

Length of output: 2394


Add defensive check for AGENTS.md to match error handling pattern in same script.

With set -e active, the unconditional copy on Line 7 will abort the script if AGENTS.md is missing. The script already uses defensive checks for optional resources (.cursor/skills at Lines 10-13), creating inconsistent error handling for a critical operation.

Suggested fix
 set -e
 
 # Copy AGENTS.md to CLAUDE.md
-cp AGENTS.md CLAUDE.md
+if [ -f "AGENTS.md" ]; then
+    cp AGENTS.md CLAUDE.md
+fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
set -e
# Copy AGENTS.md to CLAUDE.md
cp AGENTS.md CLAUDE.md
set -e
# Copy AGENTS.md to CLAUDE.md
if [ -f "AGENTS.md" ]; then
cp AGENTS.md CLAUDE.md
fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@utils/setup_claude.sh` around lines 4 - 8, Add a defensive existence check
before the unconditional "cp AGENTS.md CLAUDE.md" operation: verify that
AGENTS.md exists (similar to the existing check for ".cursor/skills"), and if it
does not, emit a clear error message and exit non‑zero so the script fails with
an informative message rather than an opaque cp error; update the block around
the cp command in utils/setup_claude.sh accordingly so the check precedes the cp
AGENTS.md CLAUDE.md operation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants